

<!DOCTYPE html>
<html lang="zh" xmlns:v-bind="http://www.w3.org/1999/xhtml">

<head><meta name="generator" content="Hexo 3.9.0">
    <title>🚀 UniApp热更新检测🔥🔥🔥 - suke`s Notice</title>
<meta charset="utf-8">
<meta name="X-UA-Compatible" content="IE=edge">
<meta name="author" content="suke">
<meta name="description" content="使用12345678910111213141516171819   //入口文件   // 检查更新let upd...">
<meta name="keywords" content="javascript html css php server npm nodejs">

<link rel="alternate" type="application/atom+xml" title="ATOM 1.0" href="/atom.xml">

    <meta charset="utf-8">
    <meta name="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
    <meta content="telephone=no" name="format-detection">
    <meta name="renderer" content="webkit">
    <meta name="theme-color" content="#ffffff">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/css/bootstrap.min.css" integrity="sha256-eSi1q2PG6J7g7ib17yAaWMcrr5GrtohYChqibrV7PBE=" crossorigin="anonymous">
<link rel="stylesheet" href="/css/journal.css?71548151">

<script src="/js/loadCSS.js"></script>
<script>
    loadCSS("https://fonts.googleapis.com/css?family=Lora|Montserrat|Fira+Mono|Material+Icons");
    (function (d) {
        var config = {
                kitId: 'dwg1tuc',
                scriptTimeout: 3000,
                async: true
            },
            h = d.documentElement, t = setTimeout(function () {
                h.className = h.className.replace(/\bwf-loading\b/g, "") + " wf-inactive";
            }, config.scriptTimeout), tk = d.createElement("script"), f = false,
            s = d.getElementsByTagName("script")[0], a;
        h.className += " wf-loading";
        tk.src = 'https://use.typekit.net/' + config.kitId + '.js';
        tk.async = true;
        tk.onload = tk.onreadystatechange = function () {
            a = this.readyState;
            if (f || a && a != "complete" && a != "loaded") return;
            f = true;
            clearTimeout(t);
            try {
                Typekit.load(config)
            } catch (e) {
            }
        };
        s.parentNode.insertBefore(tk, s)
    })(document);
</script>
<noscript>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora|Montserrat|Anonymous+Pro:400|Material+Icons">
</noscript>
</head>
<body>
<div id="top"></div>
<div id="app">
<div class="single-column-drawer-container" ref="drawer" v-bind:class="{ 'single-column-drawer-container-active': isDrawerOpen }">
    <div class="drawer-content">
        <div class="drawer-menu">
            <a class="a-block drawer-menu-item false" href="https://sukeai.netlify.com">
                Home
            </a>
            

            
            
            <a class="a-block drawer-menu-item false" href="/firends/index.html">
                朋友👬
            </a>
            
            <a class="a-block drawer-menu-item false" href="/projects/index.html">
                空闲下来做的项目
            </a>
            
            <a class="a-block drawer-menu-item false" href="/about/index.html">
                关于我
            </a>
            

            
            <a class="a-block drawer-menu-item" href="/atom.xml">
                RSS
            </a>
            
        </div>
    </div>
</div>
<transition name="fade">
    <div v-bind:class="{ 'single-column-drawer-mask': mounted }" v-if="isDrawerOpen" v-on:click="toggleDrawer"></div>
</transition>
<nav ref="navBar" class="navbar sticky-top navbar-light single-column-nav-container">
    <div ref="navBackground" class="nav-background"></div>
    <div class="container container-narrow nav-content">
        <button id="nav_dropdown_btn" class="nav-dropdown-toggle" type="button" v-on:click="toggleDrawer">
            <i class="material-icons">
                menu
            </i>
        </button>
        <a ref="navTitle" class="navbar-brand" href="/">
            suke`s Notice
        </a>
    </div>
</nav>
<div class="single-column-header-container" ref="pageHead" v-bind:style="{ transform: 'translateZ(0px) translateY('+.3*scrollY+'px)', opacity: 1-navOpacity }">
    <a href="/">
        <div class="single-column-header-title">suke`s Notice</div>
        <div class="single-column-header-subtitle">hexo博客</div>
    </a>
</div>
<div ref="sideContainer" class="side-container">
    <a class="a-block nav-head false" href="/">
        <div class="nav-title">
            有猫病.
        </div>
        <div class="nav-subtitle">
             她的眼里有光,她爱的人是谁呢 
        </div>
    </a>

    <div class="nav-link-list">
        

        
        
        <a class="a-block nav-link-item false" href="/firends/index.html">
            朋友👬
        </a>
        
        <a class="a-block nav-link-item false" href="/projects/index.html">
            空闲下来做的项目
        </a>
        
        <a class="a-block nav-link-item false" href="/about/index.html">
            关于我
        </a>
        

        
        <a class="a-block no-tint nav-link-item" href="/atom.xml">
            RSS
        </a>
        
    </div>

    
    <div class="nav-footer">
        Proudly published with Hexo<br>
        
        Theme <a href="https://github.com/SumiMakito/hexo-theme-journal/" target="_blank" rel="noreferrer noopener">Journal.</a> by <a href="https://mak1t0.cc/" target="_blank" rel="noreferrer noopener">Makito</a><br>
        
        &copy; 2020 <a href="https://sukeai.netlify.com">suke`s Notice</a>
    </div>
</div>
<div ref="extraContainer" class="extra-container">
    <div class="pagination">
        <a id="globalBackToTop" class="pagination-action animated-visibility" href="#top" :class="{ invisible: scrollY == 0 }">
            <i class="material-icons pagination-action-icon">
                keyboard_arrow_up
            </i>
        </a>

        
    </div>
</div>



<div ref="streamContainer" class="stream-container">
    <div class="post-list-container post-list-container-shadow">
        <div class="post">
            <div class="post-head-wrapper-text-only" style="background-image: url('')">
                <div class="post-title">
                    🚀 UniApp热更新检测🔥🔥🔥
                    <div class="post-meta">
                        <time datetime="2019-12-03T13:55:37.000Z" itemprop="datePublished">
                            2019-12-03 13:55
                        </time>&nbsp;
                        
    
                        
                        
                        <i class="material-icons" style>label</i>
                        
                        <a href="/tags/javascript-uniapp/">javascript uniapp</a>
                        
                        
                    </div>
                </div>
            </div>
    
            <div class="post-body-wrapper">
                <div class="post-body">
                    <h1 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h1><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">   <span class="comment">//入口文件</span></span><br><span class="line">   <span class="comment">// 检查更新</span></span><br><span class="line"><span class="keyword">let</span> updateCheck = <span class="comment">//new update(this.api.update,true,'1.0.0')</span></span><br><span class="line"></span><br><span class="line">   <span class="comment">// 模板中</span></span><br><span class="line">   <span class="keyword">import</span> update <span class="keyword">from</span> <span class="string">'@/util/update.js'</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">default</span> &#123;</span><br><span class="line">	data() &#123;</span><br><span class="line">		<span class="keyword">return</span> &#123;</span><br><span class="line">			updateCheck:<span class="comment">//new update(this.api.update),</span></span><br><span class="line">		&#125;</span><br><span class="line">	&#125;,</span><br><span class="line">       ...</span><br><span class="line"></span><br><span class="line">       updateCheck.status <span class="comment">//更新状态</span></span><br><span class="line"></span><br><span class="line">       updateCheck.version <span class="comment">//当前资源包版本</span></span><br><span class="line"></span><br><span class="line">       updateCheck.doUpdate() <span class="comment">//更新方法</span></span><br></pre></td></tr></table></figure>

<h1 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h1><p>接口和字段都需要对应修改</p>
<figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br></pre></td><td class="code"><pre><span class="line">    <span class="keyword">export</span> <span class="keyword">default</span> <span class="class"><span class="keyword">class</span> <span class="title">update</span> </span>&#123;</span><br><span class="line">	<span class="comment">// #ifdef APP-PLUS</span></span><br><span class="line">	<span class="comment">// 查询更新接口</span></span><br><span class="line">	api = <span class="literal">null</span></span><br><span class="line">	<span class="comment">// 当前版本号</span></span><br><span class="line">	version = <span class="string">'1.0.0'</span></span><br><span class="line">	<span class="comment">// 更新包状态</span></span><br><span class="line">	status = <span class="string">''</span></span><br><span class="line">	updateInfo = &#123;&#125; <span class="comment">//远程返回的更新信息</span></span><br><span class="line">	autoInstall=<span class="literal">false</span></span><br><span class="line">	</span><br><span class="line">	<span class="comment">// 初始化</span></span><br><span class="line">	<span class="keyword">constructor</span>(api,autoInstall=false,choooseVersion='1.0.40') &#123;</span><br><span class="line">		<span class="keyword">this</span>.api = api</span><br><span class="line">		<span class="keyword">this</span>.autoInstall=autoInstall</span><br><span class="line">		<span class="keyword">this</span>.choooseVersion = choooseVersion</span><br><span class="line">		<span class="keyword">this</span>.init()</span><br><span class="line">	&#125;</span><br><span class="line">	</span><br><span class="line">	<span class="keyword">async</span> init() &#123;</span><br><span class="line">		<span class="keyword">this</span>.status = <span class="keyword">await</span> <span class="keyword">this</span>.checkVersion()</span><br><span class="line">		<span class="keyword">if</span>(<span class="keyword">this</span>.autoInstall)&#123;</span><br><span class="line">			<span class="keyword">this</span>.doUpdate(<span class="literal">true</span>)</span><br><span class="line">		&#125;</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="comment">// 获取版本号</span></span><br><span class="line">	getVersion() &#123;</span><br><span class="line">		<span class="keyword">return</span> <span class="keyword">new</span> <span class="built_in">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line">			plus.runtime.getProperty(plus.runtime.appid, widgetInfo =&gt; &#123;</span><br><span class="line">				<span class="keyword">if</span> (widgetInfo) &#123;</span><br><span class="line">					<span class="keyword">if</span>(widgetInfo.version == <span class="keyword">this</span>.choooseVersion)&#123;</span><br><span class="line">						uni.setStorageSync(<span class="string">'chooseVersion'</span>,<span class="literal">true</span>)</span><br><span class="line">					&#125;</span><br><span class="line">					resolve(widgetInfo.version)</span><br><span class="line">				&#125;</span><br><span class="line">				reject(widgetInfo)</span><br><span class="line">			&#125;)</span><br><span class="line">		&#125;)</span><br><span class="line">	&#125;</span><br><span class="line">	</span><br><span class="line">	<span class="comment">// 查看云端接口</span></span><br><span class="line">	<span class="keyword">async</span> checkVersion() &#123;</span><br><span class="line">		<span class="keyword">let</span> version = <span class="keyword">await</span> <span class="keyword">this</span>.getVersion()</span><br><span class="line">		<span class="keyword">this</span>.version = version</span><br><span class="line">		<span class="keyword">return</span> <span class="keyword">new</span> <span class="built_in">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line">			<span class="keyword">this</span>.api().then(<span class="function"><span class="params">res</span> =&gt;</span> &#123;</span><br><span class="line">				<span class="keyword">if</span> (res) &#123;</span><br><span class="line">					<span class="keyword">this</span>.updateInfo = res</span><br><span class="line">					<span class="built_in">console</span>.log(res)</span><br><span class="line">					<span class="keyword">let</span> &#123;</span><br><span class="line">						version: versionOl,</span><br><span class="line">						update_size</span><br><span class="line">					&#125; = res</span><br><span class="line">					<span class="keyword">if</span> (versionOl == version) &#123;</span><br><span class="line">						resolve(<span class="string">''</span>)</span><br><span class="line">					&#125;</span><br><span class="line">					<span class="keyword">let</span> versionArr = version.split(<span class="string">'.'</span>).map(<span class="function"><span class="params">x</span>=&gt;</span><span class="built_in">Number</span>(x))</span><br><span class="line">					<span class="keyword">let</span> versionOlArr = versionOl.split(<span class="string">'.'</span>).map(<span class="function"><span class="params">x</span>=&gt;</span><span class="built_in">Number</span>(x))</span><br><span class="line">					<span class="built_in">console</span>.log(versionOlArr, versionArr)</span><br><span class="line">					<span class="keyword">if</span> (versionArr &amp;&amp; versionOlArr) &#123;</span><br><span class="line">						<span class="keyword">if</span> (versionOlArr[<span class="number">0</span>] &gt; versionArr[<span class="number">0</span>] &amp;&amp; update_size==<span class="number">2</span>) &#123;</span><br><span class="line">							resolve(<span class="string">'版本更新'</span>)</span><br><span class="line">						&#125;</span><br><span class="line">						<span class="keyword">if</span> (versionOlArr[<span class="number">0</span>] == versionArr[<span class="number">0</span>]) &#123;</span><br><span class="line">							<span class="keyword">if</span> (versionOlArr[<span class="number">1</span>] &gt; versionArr[<span class="number">1</span>]) &#123;</span><br><span class="line">								resolve(<span class="string">'修复更新'</span>)</span><br><span class="line">							&#125;</span><br><span class="line">							<span class="keyword">if</span> (versionOlArr[<span class="number">0</span>] == versionArr[<span class="number">0</span>]) &#123;</span><br><span class="line">								<span class="keyword">if</span> (versionOlArr[<span class="number">2</span>] &gt; versionArr[<span class="number">2</span>]) &#123;</span><br><span class="line">									resolve(<span class="string">'修复更新'</span>)</span><br><span class="line">								&#125;</span><br><span class="line">							&#125;</span><br><span class="line">						&#125;</span><br><span class="line">					&#125;</span><br><span class="line">					reject(<span class="string">'获取版本号失败'</span>)</span><br><span class="line">				&#125;</span><br><span class="line">			&#125;)</span><br><span class="line">		&#125;)</span><br><span class="line">	&#125;</span><br><span class="line">	</span><br><span class="line">	<span class="comment">// 整包更新</span></span><br><span class="line">	doFullUpdate() &#123;</span><br><span class="line">		<span class="keyword">let</span> url = <span class="keyword">this</span>.updateInfo.download_url</span><br><span class="line">		plus.runtime.openURL(url);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="comment">// 热更新</span></span><br><span class="line">	doUpdate(autoInstall) &#123;</span><br><span class="line">		<span class="keyword">let</span> that = <span class="keyword">this</span></span><br><span class="line">		<span class="keyword">if</span>(<span class="keyword">this</span>.status == <span class="string">'版本更新'</span>)&#123;</span><br><span class="line">			<span class="keyword">this</span>.doFullUpdate()</span><br><span class="line">		&#125;</span><br><span class="line">		<span class="keyword">if</span>(<span class="keyword">this</span>.status == <span class="string">'修复更新'</span>)&#123;</span><br><span class="line">			<span class="keyword">if</span>(autoInstall)&#123;</span><br><span class="line">				uni.showModal(&#123;</span><br><span class="line">					title:<span class="string">"更新提示"</span>,</span><br><span class="line">					content:<span class="keyword">this</span>.updateInfo.version_desc +<span class="string">'\n更新版本号：'</span> +<span class="keyword">this</span>.updateInfo.version,</span><br><span class="line">					success(res)&#123;</span><br><span class="line">						<span class="keyword">if</span>(res.confirm)&#123;</span><br><span class="line">							that.install()</span><br><span class="line">						&#125;</span><br><span class="line">					&#125;</span><br><span class="line">				&#125;)</span><br><span class="line">			&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">				<span class="keyword">this</span>.install()</span><br><span class="line">			&#125;</span><br><span class="line">			</span><br><span class="line">		&#125;</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="comment">//下载热更新包 重启更新</span></span><br><span class="line">	install()&#123;</span><br><span class="line">		uni.showLoading(&#123;</span><br><span class="line">			title:<span class="string">"下载更新中"</span>,</span><br><span class="line">			icon:<span class="string">"none"</span>,</span><br><span class="line">			mask:<span class="literal">true</span></span><br><span class="line">		&#125;)</span><br><span class="line">		uni.downloadFile(&#123;</span><br><span class="line">			url: <span class="keyword">this</span>.updateInfo.update_file,</span><br><span class="line">			success: <span class="function"><span class="params">downloadResult</span> =&gt;</span> &#123;</span><br><span class="line">				uni.hideLoading();</span><br><span class="line">				<span class="built_in">console</span>.log(downloadResult);</span><br><span class="line">				uni.showLoading(&#123;</span><br><span class="line">					title: <span class="string">"正在安装..."</span>,</span><br><span class="line">					icon: <span class="string">"none"</span>,</span><br><span class="line">					mask:<span class="literal">true</span></span><br><span class="line">				&#125;);</span><br><span class="line">				<span class="keyword">if</span> (downloadResult.statusCode === <span class="number">200</span>) &#123;</span><br><span class="line">					plus.runtime.install(</span><br><span class="line">						downloadResult.tempFilePath, &#123;&#125;,</span><br><span class="line">						<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">							uni.hideLoading();</span><br><span class="line">							<span class="built_in">console</span>.log(<span class="string">"install success..."</span>);</span><br><span class="line">							uni.showModal(&#123;</span><br><span class="line">								title: <span class="string">"提示"</span>,</span><br><span class="line">								content: <span class="string">"更新已安装，是否立即重启？"</span>,</span><br><span class="line">								success(res) &#123;</span><br><span class="line">									<span class="keyword">if</span> (res.confirm) &#123;</span><br><span class="line">										plus.runtime.restart();</span><br><span class="line">									&#125;</span><br><span class="line">								&#125;</span><br><span class="line">							&#125;);</span><br><span class="line">						&#125;,</span><br><span class="line">						<span class="function"><span class="keyword">function</span> (<span class="params">e</span>) </span>&#123;</span><br><span class="line">							uni.hideLoading();</span><br><span class="line">							<span class="built_in">console</span>.error(<span class="string">"install fail..."</span>, e);</span><br><span class="line">						&#125;</span><br><span class="line">					);</span><br><span class="line">				&#125;</span><br><span class="line">			&#125;</span><br><span class="line">		&#125;);</span><br><span class="line">	&#125;</span><br><span class="line">	<span class="comment">// #endif</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
                </div>
            </div>
    
            <nav class="post-pagination">
    
    <a class="newer-posts" href="/2019-12-03/Push检测.html">
        Previous post<br>UniApp Push检测 👂
    </a>
    
    <span class="page-number"></span>
    
    <a class="older-posts" href="/2019-11-28/uniapp快速开发常用工具「1」.html">
        Next post<br>uniapp快速开发常用工具「1」🔧 📦
    </a>
    
</nav>

    
            


        </div>
    </div>
    <div class="single-column-footer">
    Proudly published with Hexo<br>
    
    Theme <a href="https://github.com/SumiMakito/hexo-theme-journal/" target="_blank" rel="noreferrer noopener">Journal.</a> by <a href="https://mak1t0.cc/" target="_blank" rel="noreferrer noopener">Makito</a><br>
    
    &copy; 2020 <a href="https://sukeai.netlify.com">suke`s Notice</a>
</div>
</div>

</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.4/dist/umd/popper.min.js" integrity="sha256-EGs9T1xMHdvM1geM8jPpoo8EZ1V1VRsmcJz8OByENLA=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha256-VsEqElsCHSGmnmHXGQzvoWjWwoznFSZc6hs7ARLRacQ=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js" integrity="sha256-FtWfRI+thWlNz2sB3SJbwKx5PgMyKIVgwHCTwa3biXc=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/smooth-scroll@14.2.1/dist/smooth-scroll.polyfills.min.js" integrity="sha256-CI4Gq5E0io1Pv0xM3qPM+NUIOhbIBvC3GiN1Y4KhXpw=" crossorigin="anonymous"></script>
<script src="/js/journal.js?97593360"></script>



</body>
</html>
